package org.jiuling.tencentcloud.cos.client.builder;

import com.qcloud.cos.COSClient;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.region.Region;
import org.jiuling.tencentcloud.cos.client.factory.CosClientFactory;
import org.jiuling.tencentcloud.cos.client.util.COSClientUtil;
import org.jiuling.tencentcloud.cos.config.TencentCosConfig;

/**
 * Cos客户端生成器
 * @author 紫灵
 * @date 2024年02月23日 19时04分50秒
 */
public class CosClientBuilder implements CosClientFactory {

    /** 腾讯云对象存储配置 */
    private final TencentCosConfig tencentCosConfig;

    public CosClientBuilder(TencentCosConfig tencentCosConfig) {
        this.tencentCosConfig = tencentCosConfig;
    }

    /**
     * 获取Cos客户端
     * 本方法根据永久密钥初始化 COSClient的，官方是不推荐，官方推荐使用临时密钥，是可以限制密钥使用权限，创建cred时有些区别
     * @return COS客户端
     */
    @Override
    public COSClient builderCosClient() {
        // 初始化用户身份信息（secretId, secretKey）。
        COSCredentials cred = new BasicCOSCredentials(tencentCosConfig.getSecretId(), tencentCosConfig.getSecretKey());
        // 设置存储桶的地域（上文获得）
        Region region = new Region(tencentCosConfig.getBucketAddr());
        // 获取并返回客户端
        return COSClientUtil.getCosClient(cred,region);
    }

}
